//
//  AlwaysTools.h
//  AppMacros
//
//  Created by 姚敦鹏 on 2017/9/12.
//  Copyright © 2017年 Encifang. All rights reserved.
//

#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>

@interface AlwaysTools : NSObject

#pragma mark --
#pragma mark -- 正则判断
/**
 *  @brief 验证email
 *  @return 是邮箱与否
 */
+(BOOL)validateEmail:(NSString *)email;


/**
 *  @brief 验证手机号码
 *  @return 是手机与否
 */
+(BOOL)validateMobile:(NSString *)phone;

/**
 *  @brief 验证用户名
 *  @return 用户名是否合格
 */
+(BOOL)validateUserName:(NSString *)userName;

/**
 *  @brief  昵称
 *  @return 昵称是否合格
 */
+(BOOL)validateNickname:(NSString *)nickeName;

/**
 *  @brief 判断密码类型
 *  @param passWord 密码
 *  @param minNum 最短长度
 *  @param maxNum 最长长度
 */
+(BOOL)validatePassword:(NSString *)passWord minLength:(NSString *)minNum maxLength:(NSString *)maxNum;

/**
 *  @brief 验证座机
 *  @param phone 座机号码
 *  @return 是座机与否
 */
+(BOOL) validateTelephone:(NSString *)phone;

/**
 *  @brief 检查银行卡号
 *  @param cardNo 银行卡号
 */
+(BOOL)checkCardNo:(NSString*)cardNo;

/**
 *  @brief 检查身份证
 *  @param cart 身份证
 */
+(BOOL)validateIdentityCard:(NSString *)cart;

/**
 *  @brief 判断字符串是否为空
 */
+(BOOL)stringIsEmpty:(NSString *)string;


/**
 *  @brief  url
 *  @return urlString
 */
+(BOOL)validateUrl:(NSString *)urlStr;

/**
 *  @brief  车牌号验证
 *  @return 车牌号
 */
+(BOOL)validateCarNo:(NSString *)carNo;

/**
 *  @brief  车型验证
 *  @return 车型
 */
+(BOOL)validateCarType:(NSString *)CarType;


#pragma mark -- NSString
#pragma mark -- 加密
/**
 *  @brief Base64_加密(string—>data->base64)
 *  @return base64
 */
+(NSString *)base64:(NSString *)string;


/**
 *  @brief Base64加密,UTF8(string—>base64->UTF8)
 *  @return UTF8
 */
+(NSString *)base64Decoded:(NSString *)string;


/**
 *  @brief  MD5 加密
 *  @param  isLower 是否小写返回
 *  @return 加密后字符
 */
+(NSString *)MD5Hash:(NSString *)string isLower:(BOOL)isLower;


#pragma mark --
#pragma mark -- 计算文字的 宽、高、size
/**
 *  @brief 计算文字的size
 *
 *  @param size 宽高
 *  @param font  字体(默认为系统字体)
 *
 *  @return 宽高
 */
+(CGSize)ydp_boundingRectWithSize:(CGSize)size
                     withTextFont:(UIFont *)font
                          content:(NSString *)content;

/**
 *  @brief 计算文字的高度
 *
 *  @param font  字体(默认为系统字体)
 *  @param width 约束宽度
 */
+(CGFloat)ydp_heightWithFont:(UIFont *)font
          constrainedToWidth:(CGFloat)width
                     content:(NSString *)content;
/**
 *  @brief 计算文字的宽度
 *
 *  @param font   字体(默认为系统字体)
 *  @param height 约束高度
 */
+(CGFloat)ydp_widthWithFont:(UIFont *)font
        constrainedToHeight:(CGFloat)height
                    content:(NSString *)content;


/**
 *  @brief 计算文字的大小
 *
 *  @param font  字体(默认为系统字体)
 *  @param width 约束宽度
 */
+(CGSize)ydp_sizeWithFont:(UIFont *)font
       constrainedToWidth:(CGFloat)width
                  content:(NSString *)content;
/**
 *  @brief 计算文字的大小
 *
 *  @param font   字体(默认为系统字体)
 *  @param height 约束高度
 */
+(CGSize)ydp_sizeWithFont:(UIFont *)font
      constrainedToHeight:(CGFloat)height
                  content:(NSString *)content;


#pragma mark -- 
#pragma mark -- 沙河路径
/**
 获取沙盒路径
 */
+ (NSString *)getSandboxPath;

/**
 判断路径或者文件是否存在 
 */
+ (BOOL)isExistWithPath:(NSString *)path;

/**
 扩展成路径
 */
+ (NSString *)getPath:(NSString *)path name:(NSString *)name;



/**
 保存文件到本地
 */
+ (void)saveFileWithPath:(NSString *)path
                FileName:(NSString *)name
                 content:(id)content;

/**
 读文件
 */
+ (NSData *)readFileWithPath:(NSString *)path FileName:(NSString *)name;

/**
 读取字典数据
 */
+ (id)readWithPath:(NSString *)path FileName:(NSString *)name;


/**
 修改占位符颜色，添加左边imageview
 
 @param attString 内容
 @param textField textField description
 @param imageString 图片名
 */
+(void)attributedString:(NSString *)attString
         andHolderColor:(UIColor *)color
            placeholder:(UITextField *)textField
            imageString:(NSString *)imageString
           andImageRect:(CGRect)imageRect;

/**
 设置textField 左边距
 */
+(void)textFieldLeftMargin:(CGFloat)margin
               placeholder:(UITextField *)textField, ...NS_REQUIRES_NIL_TERMINATION;

/**
 颜色转图片
 */
+ (UIImage *)imgColor:(UIColor *)color;


/**
 设置某个字体大小
 
 @param String 需要修改的字符串
 @param Size 字体大小
 @param Range 通过坐标指定修改某个或多个
 @return return value description
 */
+(NSMutableAttributedString *)attributedString:(NSString *)String
                                 andFontOfSize:(CGFloat)Size
                                      andRange:(NSRange)Range;
/**
 设置某个字体颜色
 
 @param String 需要修改的字符串
 @param Color Color description
 @param Range 指定区域
 @return return value description
 */
+(NSMutableAttributedString *)attributedString:(NSString *)String
                                      andColor:(UIColor *)Color
                                      andRange:(NSRange)Range;

#pragma mark --
#pragma mark -- NSDate

/**
 获取 当前时间 （默认 @"yyyy-MM-dd HH:mm:ss"）
 */
+ (NSString *)getDateWithFormat:(NSString *)format;

/**
 获取时间 （默认 @"yyyy-MM-dd HH:mm:ss"）
 @param date 时间
 */
+ (NSString *)getSystemTime:(NSDate *)date format:(NSString *)format;

/**
 时间字符串转时间戳
 */
+(NSInteger)DateString:(NSString*)DateString DateFormat:(NSString*)Format;

/**
 *  是否是今天
 */
+(BOOL)ydp_isToday:(NSDate *)date;

/**
 时间戳 转 时间 xxxx年xx月xx日
 */
+(NSString *)timeWithTimeIntervalString:(NSString *)timeString;

/**
 时间戳 转 时间 NSDate
 */
+(NSDate *)dateWithTimeIntervalString:(NSString *)timeString;

#pragma mark --
#pragma mark -- NSError
+ (NSError *)initWithMsg:(NSString *)errMsg code:(NSInteger)code;

+(id)shareAlwaysTool;

@end
